package si.yun.dao;

import org.apache.ibatis.annotations.Param;
import si.yun.entity.*;

import java.util.List;
import java.util.Map;

/**
 * @program: SiYunClass
 * @description: 人事功能dao层
 * @author: 崔晓晨
 * @create: 2021-07-28 20:50
 **/
public interface PersonnelDao {
    //今日新增的用户
    int selUserToday();
    //昨日新增的用户
    int selUserYes();
    //本月新增的用户
    int selUserMou();
    //用户的总数
    int selUserNum();
    //外部申请人员（已审核的）
    int selapplyPassNum();
    //后台管理员总人数
    int selAfterUserNum();
    //待审核事务（外部申请人员）
    int selApplyWaitNum();
    //待审核事务（意见反馈）
    int selFeedBackWaitNum();
    //查询申请的总人数
    int selApplyNum();
    //查询申请的总人数
    int selApplyPass(@Param("durDate") int durDate);
    //查询未通过的人数
    int selApplyRejection(@Param("durDate") int durDate);
    //查询申请人数最多的课程
    String selApplyPosition(@Param("durDate") int durDate);
    //获取周一到周日每天的数据
    int selUserday1();
    int selUserday2();
    int selUserday3();
    int selUserday4();
    int selUserday5();
    int selUserday6();
    int selUserday7();
    //获取用户列表
    List<SyBeforeUser> selUserTable(SyBeforeUser beforeUser);
    //更改用户账号的状态
    int updBeforeStatus(@Param("userId") int userId,@Param("status")int status);
    //更改后端用户账号的状态
    int updBackStatus(@Param("userId") int userId,@Param("status")int status);
    //添加停用的用户
    int addClosure(SyClosure closure);
    //查询单个用户的详细信息
    SyBeforeUser selBackUserInfoId(@Param("userId") int userId);
    SyBeforeUser selBefoUserInfoId(@Param("userId") int userId);
    //查询所有的后台管理员id
    List<Integer> selBackUserIds();
    //查询所有的前台管理员id
    List<Integer> selBeforeUserIds();
    //查询单个后台用户的详细信息
    SyUser selBackUserInfo(@Param("userId") int userId);
    //编译用户信息 ( 不能编译用户的学习时长  和 交易金额 以及 账号创建时间)
    int updSelUser(SyBeforeUser beforeUser);
    //查询封号用户列表
    List<SyClosure> selClosureUserTable(SyClosure closure);
    //解封用户 改变封号列表信息
    int updClosure(SyClosure closure);
    //删除停用后的账户
    int delBeforeStatus(@Param("id") int id);
    //查询进思用户列表的详细数据
    List<PerUserListThink> selThinkUserTable(PerUserListThink userThink);
    //查看进思用户的详细信息
    PerUserListThink selUserThinkIndex(@Param("developmentId") int developmentId);
    //更改用户头像
    int updImg(@Param("developmentId") int developmentId, @Param("newName")String newName,@Param("userId")int userId);
    //更新进思用户的基本信息
    int updThinkInfo(PerUserListThink perUserListThink);
    //查询优惠券列表
    List<OperCoupons> selAwayListTab();
    //批量添加 赠送优惠券的优惠券记录
    int addUserCoupons(@Param("userId") List<Integer> userId, @Param("couponId")List<Integer> couponId);
    //查找出  发放的数量
    List<SyUserCoupon> selGaveNum();
    //批量更新发放后剩余的优惠券
    int updSurplus (List<SyUserCoupon> list);
    //添加进思用户列表
    int addThinkUserInfo(SyUserDevelopment development);
    //添加后端操作日志
    int addOperationLog(SyOperationLog log);
    //添加封号（解封）的操作日志
    int addClosureLog(SyClosureLog syClosureLog);
    //查看封号日志表
    List<PerClosureLog> selClosureLog(PerClosureLog log);
    //删除封号日志
    int delClosureLog(@Param("id") int id);
    //查看操作日志
    List<SyOperationLog> selOperationLog(SyOperationLog operationLog);
    //删除操作日志
    int delOperationLog(@Param("id") int id);
    //查询非进思用户列表
    List<SyBeforeUser> selNotThinkUser(SyBeforeUser beforeUser);
    //查看前台用户反馈列表
    List<PerFeedback> selFeedbackList(PerFeedback feedback);
    //查询待审核数量
    int selWaitNum();
    //查看已受理数量
    int selAcceptedNum();
    //更新受理状态
    int updFeedback(@Param("feedbackStatus") Integer feedbackStatus,@Param("feedbackId") Integer feedbackId);
    //查看受理详情
    PerOperationLog selReceiveInfo(@Param("tablename") String tablename,@Param("remark")String remark);
    //删除反馈信息
    int delFeedback(@Param("feedbackId") Integer feedbackId);
    //查询无消费记录用户列表
    List<SyBeforeUser> selNotSpendUser(SyBeforeUser beforeUser);
    //查询部门数据管理列表
    List<PerDept> selDeptList(PerDept dept);
    //更新部门启用 停用状态
    int updDeptStatus(@Param("deptId") Integer deptId, @Param("deptStatus") Integer deptStatus);
    //修改部门信息
    int updDeptInfo(SyDept dept);
    //添加部门
    int addDeptInfo(PerDept dept);
    //删除部门信息
    int delDeptInfo(@Param("deptId") Integer deptId);
    //获取部门信息
    List<PerDeptZtreeNode> selDeptName();
    //获取后台管理员信息
    List<PerBackUser> selBackUserList(PerBackUser user);
    //管理后台管理员账号的账户是否启用
    int updBackUserEnabled(@Param("userId") Integer userId,@Param("enabled") Integer enabled);
    //查找所有封停用户
    List<PerClosureUser> selClosureUser();
    //更改用户账号状态   封停用户账号
    int updBackUserStatus(@Param("userId") Integer userId,@Param("enabled")Integer enabled,@Param("status") Integer status);
    //更新后台管理员信息
    int updBackUserInfo(PerBackUser user);
    //更新后台管理人员头像
    int updBackUserImg(@Param("newName")String newName,@Param("userId") int userId);
    //导入后台管理员
    int importExcelUser(List<PerBackUser> list);
    //查询今日所有待解封用户
    List<SyClosure> selCloUserInfo(String endDate);
    //解封前台用户
    Integer updBeforeStatus(@Param("userId") Integer userId,@Param("status") Integer status);
    //解封后台用户
    Integer updBackStatus(@Param("userId") Integer userId,@Param("status") Integer status);
    //解封用户
    Integer updStatus(@Param("tableName")String tableName,@Param("userId") Integer userId,@Param("status") Integer status);
    //添加后台管理人员
    int addBackUserInfo(PerBackUser backUser);
    // 获取今年每月新增的用户数量（用户）
    UserMonth selBeforeNum();
    //获取今年每月新增的用户数量（管理员）
    UserMonth selBackNum();
    // 获取人员登录总次数 成功次数（前端 ，管理端）
    Integer selBeforeLoginNum();
    Integer selBackLoginNum();
    //获取某一时间段内登录的数据(前)
    Integer selTimeOne();
    Integer selTimeTwo();
    Integer selTimeThree();
    Integer selTimeFore();
    Integer selTimeFive();
    //获取某一时间段内登录的数据（管）
    Integer selTimeOnes();
    Integer selTimeTwos();
    Integer selTimeThrees();
    Integer selTimeFores();
    Integer selTimeFives();
    //查询不同的反馈类型下不同的反馈结果数据
    PerFeedData selFeedDatas(@Param("feedbackType") Integer feedbackType);
    //查询反馈的总数
    PerFeedData selFeedBackNums();
    //查询不同类型下的课程视频播放量
    List<PerCourseLook> selCourseLookNum();
    //查询搜索统计量
    List<SySearch> selSearchNums();





    //获取table字段
    List<Map<String, Object>> getTable(@Param("account")String account, @Param("nickname")String nickname, @Param("applyDate")String applyDate,@Param("result")Integer result);
    //获取审核表格数据
    int getCounts();
    //获取审核详情
    SyAudiTable view(@Param("id") Integer id);
    //获取用户信息
    SyAudiTable view1(@Param("id")Integer id, @Param("result")String result);
    //获取高级检索检索内容
    List<Map<String, Object>> getTable1(@Param("account")String account,@Param("phone") String phone,@Param("position") String position, @Param("nickname")String nickname);
    //通过audit
    int audit(@Param("textarea")String textarea,@Param("remarks") String remarks,@Param("applyDate") String applyDate,@Param("position") String position,@Param("launchId") Integer launchId,@Param("pass") Integer pass);
    //驳回
    int rejected(@Param("textarea")String textarea,@Param("remarks") String remarks,@Param("applyDate") String applyDate, @Param("position")String position,@Param("launchId") Integer launchId,@Param("pass") Integer pass);
    //通过更改前台表状态
    int status(@Param("launchId") Integer launchId);
    //通过更改前台表状态
    int state(int launchId);
    //审核通过驳回表格
    List<Map<String, Object>> SelTab(@Param("result")String result);
    //获取审核日志
    SyAudiTable Review(@Param("id")Integer id);
    //获取未审核
    int getNumber(@Param("result1")Integer result1);
    //获取通过
    int getNumber1(@Param("result2")Integer result2);
    //获取驳回
    int getNumber2(@Param("result3")Integer result3);
    //前台用户登录日志
    List<Map<String, Object>> GetTab(int loginType);
    //后台用户登录日志表
    List<Map<String, Object>> ConLog(int loginType);
    //查询前台用户按钮
    List<Map<String, Object>> deskUser(@Param("loginLocation")String loginLocation, @Param("realName")String realName, @Param("loginState")Integer loginState, @Param("loginType")Integer loginType);
    //查询后台用户按钮
    List<Map<String, Object>> Background(@Param("loginLocation")String loginLocation, @Param("trueName")String trueName, @Param("loginState")Integer loginState, @Param("loginType")Integer loginType);
    //获取前台登录日志总数
    int getTotal1(Integer result1);
    //获取后台登录日志总数
    int getTotal2(Integer result2);

}
